home *** CD-ROM | disk | FTP | other *** search
- ;void deallocate_pages(handle);
- ; unsigned short handle;
-
- EXTRN _memory_model:byte
- EXTRN _error_code:byte
-
- _TEXT SEGMENT BYTE PUBLIC 'CODE'
- ASSUME CS:_TEXT
- PUBLIC _deallocate_pages
- _deallocate_pages proc near
- mov bx,sp ;BX pts to stack
- cmp _memory_model,0 ;near or far?
- jle begin ;jump if near
- inc bx ;else add 2 to BX
- inc bx ;
- begin: mov ah,45h ;function number
- mov dx,ss:[bx+2] ;get handle
- int 67H ;EMS interrupt
- mov _error_code,0 ;0 = successful
- or ah,ah ;test if successful
- jz L1 ;jump ahead if so
- inc _error_code ;1 = software error
- cmp ah,80h ;test
- je L1 ;jump if error 1
- inc _error_code ;2 = hardware error
- cmp ah,81h ;test
- je L1 ;jump if error 2
- inc _error_code ;3 = bad handle
- cmp ah,83h ;test
- je L1 ;jump if error 3
- inc _error_code ;4 = bad page mapping
- L1: cmp _memory_model,0 ;quit
- jle Quit ;
- db 0CBh ;RET far
- Quit: ret ;RET near
- _deallocate_pages endp
- _TEXT ENDS
- END